const express = require('express');//导入express模块
const path = require('path');
var bodyParser = require('body-parser');//解析,用req.body获取post参数

var app = new express();//实例化一个服务器
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));

//get表示 请求方式
//参数1 表示请求路径 '/' == localhost:8080
//参数2，该路径的处理方式
app.get('/', function (request, response) {
    //设置路径等于 app目录 /等于 index.html
    let index = './app/index.html';//相对路径
    index = path.resolve(index);
    response.sendFile(index);//返回文件
});
app.get('/ajax.html', function (request, response) {
    let index = './app/ajax.html';//相对路径
    index = path.resolve(index);
    response.sendFile(index);//返回文件
});
app.get('/data', function (request, response) {
    let index = './app/data/data.json';//相对路径
    index = path.resolve(index);
    response.sendFile(index);//返回文件
});
let ajaxData = [
    {
        id: 2,
        name: '掘创2'
    },
    {
        id: 3,
        name: '掘创3'
    },
    {
        id: 1,
        name: '掘创1'
    }
]
app.get('/ajax', function (request, response) {
    //1. 获取前端发送的id参数值
    //query使用用于get请求中，url中参数
    let id = request.query["id"];//通过参数名，获取参数值，因此多个不同参数，参数名不能相同

    let item = ajaxData.find(item => {
        return item.id == id;
    });//查看ajaxData中id等于参数id的对象

    response.json(item);
});
//第一个参数 路由路径  第二参数表示物理路径  这个两个要等价起来
app.use('/static',
    express.static(__dirname + '/app/static'));
// app.get('/css/index.css',function (request, response) {
//     let index = './app/css/index.css';//相对路径
//     index = path.resolve(index);
//     response.sendFile(index);//返回文件
// })

let students = [];
//创建100个学生
for (let i = 1; i <= 100; i++) {
    let student = {id: i, name: '掘创' + i};
    students.push(student);
}

app.get('/vue.html', function (request, response) {
    let index = './app/vue.html';//相对路径
    index = path.resolve(index);
    response.sendFile(index);//返回文件
});

app.get('/studentlist', function (request, response) {
    response.json(students);
});


//分页
app.get('/vuepage', function (request, response) {
    let index = './app/vuePage.html';//相对路径
    index = path.resolve(index);
    response.sendFile(index);//返回文件
});
app.get('/studentpage', function (req, res) {
    let pagecount = Number.parseInt(req.query["pagecount"]);//页面个数 10
    let pagenum = Number.parseInt(req.query['numpage']);// 第几页 1

    //    页数      数组开始索引，                   以及长度
    /*
      pagenum = 1     0((pagenum-1)*pagecount)        10     0~9
      pagenum = 2     10((pagenum-1)*pagecount)       10  10~19
      pagenum = 3     20((pagenum-1)*pagecount)       10  20~29
    */
    let index = (pagenum - 1) * pagecount;//获取开始索引
    let end = index + pagecount;
    let items = students.slice(index, end);//从数组中获取对应页面数据

    res.json({items, sumcount: students.length});
});

//学生新增操作页面
app.get('/studentAdd', function (req, res) {
    //使用请求类型来判断，get 获取操作页面，post 请求新增数据
    let index = './app/studentAdd.html';//相对路径
    index = path.resolve(index);
    res.sendFile(index);//返回文件
});
//学生新增操作后台代码
app.post('/studentAdd', function (req, res) {
    // let params = JSON.stringify(req.body)
    let id = req.body.id;
    let name = req.body.name;


    students.push({id, name});

    res.json({status: 'ok', code: '200'});//表示后台插入
});
app.get('/studentAddEx', function (req, res) {
    let id = req.query['id'];
    let name = req.query['name'];


    students.push({id, name});

    res.json({status: 'ok', code: '200'});//表示后台插入
});

//删除学生记录
app.post('/studentDel', function (req, res) {
    let id = req.body.id;

    let index = students.findIndex(item => {
        return item.id == id;
    });//查找id的索引
    students.splice(index, 1);//删除对象

    res.json({status: 'ok', code: '200'});//表示后台插入
});
//修改学生
app.get('/studentModify', function (req, res) {
    //使用请求类型来判断，get 获取操作页面，post 请求新增数据
    let index = './app/studentModify.html';//相对路径
    index = path.resolve(index);
    res.sendFile(index);//返回文件
});
//根据id获取学生数据
app.get('/studentInfo', function (req, res) {
    let id = req.query['id'];
    let item = students.find(item => {
        return item.id == id;
    });//查找id的索引
    res.json({status: 'ok', code: '200', item});//返回数据
});
app.post('/studentmodify', function (req, res) {
    let id = req.body.id;
    let name = req.body.name;
    let item = students.find(item => {
        return item.id == id;
    });//根据id找出对象
    item.name = name;

    res.json({status: 'ok', code: '200'});//返回数据
});
//启动服务
var server = app.listen(8080, function () {

    var host = server.address().address;
    var port = server.address().port;

    console.log("应用实例，访问地址为 http://%s:%s", host, port)
});//启动服务的端口号



